package com.sun.convert;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

@Data
public class UserInfo implements Serializable {
    private Long id;
    private String name;


    /**
     * @JsonFormat(pattern=“yyyy-MM-dd HH:mm:ss”)返回时间与数据库时间不同.
     * 原因:JsonFormat默认情况下timeZone为GMT（即标准时区），而北京是在东八区，所以会造成差8小时
     */
//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date registerDate;


    /**
     * 1、@DateTimeFormat只支持字符串转日期
     * @JsonFormat双向支持
     * 2、@DateTimeFormat无法设置时区，@JsonFormat可以设置时区
     * 3、同时注解，好像@JsonFormat优先
     * 4、个人认为相比之下@DateTimeFormat没有任何用
     * 5、建议使用LocalDate类型来接收，Date接收如果不处理会有时区问题
     * 6、“yyyy-MM-dd”这种格式日期根本不需要加注解
     *
     * 重大发现：
     * 1、以上观点有错误；
     * 有@RequestBody注解时，才是@JsonFormat优先，同时不处理时区会多8个小时；
     * 没有@RequestBody注解时，@JsonFormat不会生效，这个时候只能用@DateTimeFormat，
     * 并且@DateTimeFormat不会增加8个小时，但是返回前端的时候就会少八个小时，这个时候同时使用@JsonFormat可以完美解决。
     *
     * 没有@RequestBody，对象里面的字段@DateTimeFormat必须与@Validated连用；
     * 单个参数不需要。字符串转日期必须加@DateTimeFormat，否则接收参数时会抛出异常。
     */
}
